查看原文
其他

【连载】比特币史话 | 椭圆曲线(3)

刘教链 刘教链 2023-01-30

(爱德华·斯诺登,棱镜门事件吹哨人。图片来源于网络)

本篇看点:斯诺登逃出美国,爆出惊天黑幕,中本聪能否躲过美国国安局的陷阱,到底是什么样的雷,又是多么大的瓜呢?

前文回顾:
【连载】比特币史话 | 创世(1)
【连载】比特币史话 | 创世(2)
【连载】比特币史话 | 创世(3)
【连载】比特币史话 | 密码朋克(1)
【连载】比特币史话 | 密码朋克(2)
【连载】比特币史话 | 密码朋克(3)
【连载】比特币史话 | 密码朋克(4)
【连载】比特币史话 | 椭圆曲线(1)
【连载】比特币史话 | 椭圆曲线(2)

正文:

2013年5月20日,美国夏威夷机场,一个身影悄无声息地登上了一架夏威夷至中国香港的班机。他就是即将在15天后名震全球的美国工程师、“棱镜门”事件“吹哨人”爱德华·斯诺登(Edward Snowden)。6月5日、6日,英国《卫报》和美国《华盛顿邮报》接连爆料,揭露出美国国家安全局(NSA)和美国联邦调查局(FBI)早在2007年启动的一个秘密监听项目,“棱镜”(PRISM),项目代号“US-984XN”。美国电信巨头Verizon、互联网巨头企业微软、雅虎、谷歌、苹果、脸书(Facebook)等全部参与其中,在机房部署监听服务器,24小时不间断地向美国国家安全局提供用户隐私数据、通信内容和传输信息。

那一年,斯诺登还不满30周岁。

铁证如山,时任美国总统奥巴马被迫承认了“棱镜计划”的存在。这起美国有史以来最大的、侵犯隐私程度最深、人群范围最广泛的监听事件,震惊了全世界。正因如此,被派往NSA工作的斯诺登刚刚入职几个月,便因为良心上实在无法忍受美国政府如此肆无忌惮地侵犯全球互联网用户的隐私和自由,愤而“吹哨”,向记者提供了有关“棱镜”的绝密档案和资料。6月23日,斯诺登从香港辗转到莫斯科,因护照被吊销而滞留机场长达一个多月之后,终于等到了俄罗斯的庇护,并隐居至今。[1]

在斯诺登曝光的材料里,同时揭露出美国国家安全局(NSA)以及英国国安部门“政府通信总部”(GCHQ)联合制定的一个“十年计划”,通过控制全球加密技术标准制定,在标准中植入后门,日后便可一举攻破[2]。该计划的目标涵盖了在电子商务和网上银行中广泛使用的HTTPS、SSL等加密协议,而这些协议背后的加密技术之一,正是椭圆曲线加密技术。斯诺登的这一实锤,坐实了密码学专家在2007年底对美国国家标准局(NIST)颁布的新随机数标准Dual_EC_DRBG是否存在人为后门的质疑[3]。而这个新的随机数标准Dual_EC_DRBG,正是用到了椭圆曲线算法。

在数学上,椭圆曲线其实是一类曲线。椭圆曲线方程的魏尔斯特拉斯(Weierstrass)形式很简单,就是y的平方等于x的立方加上ax再加b。其中,a和b是两个系数。给这两个系数代入不同的参数,就可以得到一条不同的椭圆曲线。而所谓椭圆曲线的“标准”,就是规定a和b的值是多少。咱俩都用同一条曲线,才能互相完成加解密嘛。这两个系数的选取很有技术,选择不当就会导致加密被攻破,因此不要自行随意选择,而是遵从由密码学专家和权威部门制定并颁布的“标准曲线”。

早在2000年1月27日公布的“FIPS 186-2”号文件中,美国国家标准局(NIST)就制定了迄今仍被全世界广泛使用的椭圆曲线标准“P-256”(又称“NIST P-256”或secp256r1,字母“r”代表random“随机”)[4]。该曲线的两个系数分别规定为:

a = -3
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291

标准一经颁布,就有密码学家质疑第二个系数b怎么显得这么奇怪,究竟是如何选出这个数字的呢,并请NIST给出一个合理的解释。NIST拒绝回答。

在斯诺登曝光棱镜门事件5年前的2008年,中本聪仿佛未卜先知,放弃了当时使用率和流行度最高的P-256标准,料事如神一般地给比特币选用了另外一条椭圆曲线,secp256k1标准曲线,从而让比特币有惊无险地、完美地躲过了美国国家安全局埋伏已久的一个大大的陷阱。“secp256k1”中的字母“k”代表Koblitz,说明这是一条科布利兹曲线——对,就是以椭圆曲线提出人科布利兹教授的名字命名的一类椭圆曲线。[5]

这两条椭圆曲线在高效密码学标准组(SECG, Standards for Efficient Cryptography Group)于2010年1月27日公布的椭圆曲线推荐标准“SEC 2”中被并列推荐[6]。但是,事实上,在中本聪和比特币使用之前,secp256k1这条椭圆曲线罕有人知、用者寥寥。而这条曲线的a、b参数分别是:[7]

a = 0
b = 7

还有,它的计算速度比其他椭圆曲线常常要快30%以上。

【未完待续】(公众号:刘教链)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存